/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModuloConfiguracion;

import Acceso.Security;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;
import org.json.JSONArray;
import Modelo.Area;
import Modelo.DAL.Area_DAO;

/**
 *
 * @author andres
 */
public class ModifAreaAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String[] ALLOWED = {"Administrador"};

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        if (!Security.validateSession(request, ALLOWED)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        ModifAreaForm maf = (ModifAreaForm) form;


        String flag = request.getParameter("flag");
        if ((flag != null) && flag.equals("ida")) {
            System.out.println("entro en el flag ida");


            String id_area = maf.getIdarea();

            String select = "SELECT *,(Select count(*) from area where 1 = 1) FROM area WHERE id_area = " + id_area;

            response.setContentType("text/json");
            System.out.println(select);
            Area_DAO aDao = new Area_DAO();
            JSONArray area = aDao.consultarAreaTabla(select);
            System.out.println("area " + area);

            if (area == null) {
                maf.setError("");
                maf.setSubmit("");
                maf.setReset("");
                return mapping.findForward(FAILURE);
            }
            JSONObject Area = new JSONObject();
            Area.put("modificarAreaIda", area);
            PrintWriter pw = response.getWriter();
            pw.write(Area.toString());
            pw.flush();
            pw.close();

            maf.setError("");
            maf.setSubmit("");
            maf.setReset("");
            return mapping.findForward(FAILURE);
        }
        // Necesario para llenar le formulario

        // Necesario para modificar el objeto
        String submit = maf.getSubmit();
        //System.out.println("\n\n\n---------------\n TIPO = "+maf.getTipoInspeccion()+"\n-----------\n\n\n");
        if ((submit != null) && submit.equals("submit")) {

            // Necesario para resetear el formulario
            String reset = maf.getReset();
            if ((reset != null) && reset.equals("si")) {
                System.out.println("RESETEAR!!!!!");
                maf.reset(mapping, request);
                maf.setError("");
                maf.setSubmit("");
                maf.setReset("");
                return mapping.findForward(FAILURE);
            }
            maf.setReset("si");
            // Necesario para resetear el formulario

            System.out.println("entro en el flag submit");
            String idArea = maf.getIdarea();
            String nombre = maf.getNew_area();
            String sede = maf.getNew_sede();

            //System.out.println("\n\n---------------\n tipoIns = "+tipoInspeccion+"\n-----------\n\n");

            if (nombre == null || nombre.equals("")) {
                maf.setSubmit("");
                maf.setReset("");
                maf.setError("Debe colocar un nombre para el Area. Intente Nuevamente.");
                return mapping.findForward(FAILURE);
            }


//********************************************************************************

            if (sede == null || sede.equals("")) {
                maf.setSubmit("");
                maf.setReset("");
                maf.setError("Debe seleccionar una sede. Intente Nuevamente");
                return mapping.findForward(FAILURE);
            }

            //int nroInspeccion = Integer.parseInt(numeroInspeccion);
            // numeroInspeccion
            System.out.println("Entro........................");
            Area area = new Area(sede, idArea, nombre);
            if (Modelo.DAL.Area_DAO.actualizarArea(area)) {
                maf.reset(mapping, request);
                maf.setError("");
                maf.setSubmit("");
                maf.setReset("");
                return mapping.findForward(SUCCESS);
            } else {
                maf.setError("El area ya existe en la base de datos.");
                maf.setSubmit("");
                maf.setReset("");
                return mapping.findForward(FAILURE);
            }
        }

        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
        String id_area = request.getParameter("id_area");
        System.out.println("\n\nid_area primera = " + id_area + "\n\n");
        maf.setIdarea(id_area);
        maf.setError("");
        maf.setSubmit("");
        maf.setReset("");
        return mapping.findForward(FAILURE);
        //  Necesario para la primera ejecucion de la pagina y guardar el id del objeto
    }
}
